﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using log4net;
using Iudicium.Utilitarios;
using Iudicium.Autenticacion;

public partial class Servicios_Tramite_ListaTramites : System.Web.UI.Page
{
    private static readonly ILog log = LogManager.GetLogger("LogFile");

    protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            UsuarioIdHiddenField.Value = Autenticacion.GetCurrentUserId().ToString();
            TienePermisoHiddenField.Value = Autenticacion.TienePermisos("VER_TRAMITES").ToString();
            TodosCheckBox.Checked = true;
            EnProcesoCheckBox.Enabled = FinalizadoCheckBox.Enabled = EntregadoCheckBox.Enabled = false;
            Session["ActividadBackToUrl"] = null;
            Session["TransaccionBackToUrl"] = null;
        }
    }
    protected void TramiteGridView_RowCommand(object sender, GridViewCommandEventArgs e)
    {
        int TramiteId = 0;
        try
        {
            TramiteId = Convert.ToInt32(e.CommandArgument);
        }
        catch (Exception ex)
        {
            log.Error("No se pudo obtener el id del Tramite del CommandArgument", ex);
        }
        if (TramiteId == 0)
            return;

        if (e.CommandName.Equals("Actividad"))
        {
            Session["ServicioId"] = TramiteId;
            Session["ActividadBackToUrl"] = "~/Servicios/Tramite/ListaTramites.aspx";
            Response.Redirect("~/Servicios/Actividad/ListaActividades.aspx");
            return;
        }
        if (e.CommandName.Equals("Transaccion"))
        {
            Session["ServicioId"] = TramiteId;
            Session["TransaccionBackToUrl"] = "~/Servicios/Tramite/ListaTramites.aspx";
            Response.Redirect("~/Servicios/Transaccion/ListaTransacciones.aspx");
            return;
        }
        if (e.CommandName.Equals("EDITAR"))
        {
            Session["ServicioId"] = TramiteId;
            Response.Redirect("~/Servicios/Tramite/FormularioTramite.aspx");
            return;
        }

        if (e.CommandName.Equals("ELIMINAR"))
        {
            try
            {
                Iudicium.Tramites.CRN.TramiteCRN.DeleteTramite(TramiteId);
                Notificacion.MostrarNotificacion("El Tramite se eliminó correctamente", Notificacion.TipoNotificacion.Alert);
            }
            catch (Exception ex)
            {
                log.Error("No se pudo eliminar el Tramite con id: " + TramiteId, ex);
                Notificacion.MostrarNotificacion("Ocurrió un error al eliminar el Tramite seleccionado", Notificacion.TipoNotificacion.Error);
            }
            ControlDeNotificacion.Update();
            TramiteGridView.DataBind();
        }
    }
    protected void TramiteDataSource_Selected(object sender, ObjectDataSourceStatusEventArgs e)
    {
        if (e.Exception != null)
        {
            log.Error("No se pudo obtener la lista de Tramite mediante la busqueda", e.Exception);
            e.ExceptionHandled = true;
        }
    }

    protected string GetLabelEditar(object container)
    {
        string estado = "";
        try
        {
            estado = (string)DataBinder.Eval(container, "Estado");
        }
        catch { }
        if (estado.Equals("Finalizado") || estado.Equals("Entregado"))
            return "Ver";
        else
            return "Editar";
    }

    protected void SearchLinkButton_Click(object sender, EventArgs e)
    {
        TramiteGridView.DataBind();
    }

    protected void TramiteDataSource_Selecting(object sender, ObjectDataSourceSelectingEventArgs e)
    {
        EstadosHiddenField.Value = "";
        if (TodosCheckBox.Checked)
        {
            EnProcesoCheckBox.Enabled = FinalizadoCheckBox.Enabled = EntregadoCheckBox.Enabled = false;
            EstadosHiddenField.Value = "En Proceso,Finalizado,Entregado";
            return;
        }
        string estados = "";

        if (EnProcesoCheckBox.Checked)
            estados = "En Proceso";
        if (FinalizadoCheckBox.Checked)
            estados += estados.Length > 0 ? ",Finalizado" : "Finalizado" ;
        if (EntregadoCheckBox.Checked)
            estados += estados.Length > 0 ? ",Entregado" : "Entregado";
        EnProcesoCheckBox.Enabled = FinalizadoCheckBox.Enabled = EntregadoCheckBox.Enabled = true;
        EstadosHiddenField.Value = estados.Length == 0 ? "En Proceso,Finalizado,Entregado" : estados;
    }
    protected void TramiteDataSource_Selected1(object sender, ObjectDataSourceStatusEventArgs e)
    {
        if (e.Exception != null)
        {
            log.Error("No se pudo realizar la busqueda de Tramites",e.Exception);
            e.ExceptionHandled = true;
        }
    }
}
